/*****************************************************************************
 *   Copyright 2005 Tim A Wang
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 *
 ****************************************************************************/
package com.jb.web.renderer;

import com.jb.web.bean.TextArea;
import com.jb.web.context.WebContext;

import com.jb.faces.component.UIComponent;


/**
 * DOCUMENT ME!
 *
 * @author $author$
 * @version $Revision$
 */
public class HtmlAreaRenderer extends FormItemRenderer {
    public StringBuffer render(WebContext pCtx, UIComponent itemToRender) {
        TextArea hItem = (TextArea) itemToRender;

        if (hItem.isEnabled()) {
            return renderRich(pCtx, hItem);
        } else {
            return renderDisabled(pCtx, hItem, "" + hItem.getValue());
        }
    }

    public StringBuffer renderRich(WebContext pCtx, TextArea hItem) {
        StringBuffer html = new StringBuffer("<script type=\"text/javascript\" defer=\"1\">").append("\n\t")
                                                                                             .append("HTMLArea.replaceAll();\n")
                                                                                             .append("</script>");

        html.append("<textarea ").append(addTagProperty("style", hItem.getStyle(pCtx), null))
            .append(getEditScript(pCtx, hItem)).append(">").append((hItem.getValue() == null) ? "" : hItem.getValue())
            .append("</textarea>");

        if (!pCtx.isRunTime()) {
            html.append("<div ").append(getEditScript(pCtx, hItem))
                .append(addTagProperty("style", hItem.getStyle(pCtx), null)).append(">").append("edit").append("&nbsp;</div>");
        }

        return html;
    }

    private StringBuffer renderDisabled(WebContext pCtx, TextArea formField, String value) {
        return new StringBuffer("<div ").append(getEditScript(pCtx, formField))
                                        .append(addTagProperty("style", formField.getStyle(pCtx), null)).append(">")
                                        .append(value).append("&nbsp;</div>");
    }
}
